const express = require('express');
const path = require('path');
const compression = require('compression');
const helmet = require('helmet');
const fs = require('fs'); // Added missing import for fs

const app = express();
const PORT = process.env.PORT || 3000;

// 安全中间件 - 简化配置
app.use(helmet({
  contentSecurityPolicy: false, // 暂时禁用CSP以便调试
  crossOriginEmbedderPolicy: false
}));

// 启用gzip压缩
app.use(compression());

// 设置视图引擎
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// 简化的静态文件服务
app.use(express.static(path.join(__dirname, 'public')));

// 添加详细的调试日志
app.use((req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  console.log(`   User-Agent: ${req.get('User-Agent')}`);
  console.log(`   Referer: ${req.get('Referer') || 'none'}`);
  next();
});

// 路由
app.get('/', (req, res) => {
  res.render('index', {
    title: '潮汐漂流瓶 - 波纹写满故事，潮汐见证相逢',
    description: '潮汐漂流瓶是一款温暖的社交应用，让你在数字海洋中投掷文字瓶子，与陌生人邂逅美好故事。',
    keywords: '漂流瓶,社交,聊天,交友,文字,故事,相遇'
  });
});

// 隐私政策
app.get('/privacy', (req, res) => {
  res.render('privacy', {
    title: '隐私政策 - 潮汐漂流瓶',
    description: '潮汐漂流瓶隐私政策说明'
  });
});

// 用户协议
app.get('/terms', (req, res) => {
  res.render('terms', {
    title: '用户协议 - 潮汐漂流瓶',
    description: '潮汐漂流瓶用户协议说明'
  });
});

// 测试静态文件的路由
app.get('/test-static', (req, res) => {
  res.json({
    message: '静态文件测试',
    timestamp: new Date().toISOString(),
    publicPath: path.join(__dirname, 'public'),
    files: {
      css: fs.existsSync(path.join(__dirname, 'public/css/style.css')),
      logo: fs.existsSync(path.join(__dirname, 'public/images/logo.png')),
      js: fs.existsSync(path.join(__dirname, 'public/js/main.js')),
      video: fs.existsSync(path.join(__dirname, 'public/video/home.mp4'))
    }
  });
});

// 404处理
app.use((req, res) => {
  console.log(`404 Not Found: ${req.url}`);
  res.status(404).json({
    error: '页面未找到',
    url: req.url,
    timestamp: new Date().toISOString()
  });
});

// 错误处理
app.use((err, req, res, next) => {
  console.error('服务器错误:', err.stack);
  res.status(500).json({
    error: '服务器内部错误',
    message: err.message,
    timestamp: new Date().toISOString()
  });
});

app.listen(PORT, () => {
  console.log(`🚀 潮汐漂流瓶官网运行在 http://localhost:${PORT}`);
  console.log(`📁 静态文件目录: ${path.join(__dirname, 'public')}`);
  console.log(`🔍 测试静态文件: http://localhost:${PORT}/test-static`);
}); 